const express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');
const http = require('http');
const path = require('path');

const app = express();
const PORT = 3000; // 本地服务器端口

// 静态文件服务：托管当前目录下的静态资源（如HTML、JS、CSS等）
app.use(express.static(path.join(__dirname, '.')));

// 代理配置：将所有以 /peerjs-server 开头的请求转发到目标服务器
app.use('/peerjs-server', createProxyMiddleware({
  target: 'http://192.168.50.177:9000', // 目标服务器地址
  changeOrigin: true, // 允许跨域（修改请求头中的Host为目标服务器地址）
  pathRewrite: {
    '^/peerjs-server': '' // 去掉请求路径中的 /peerjs-server 前缀
    // 例如：本地请求 /peerjs-server/abc 会被转发为 http://101.42.177.76:9000/abc
  },
  // 可选：启用WebSocket代理（如果目标服务需要WebSocket通信，如PeerJS信令服务器）
  ws: true,
  // 可选：打印代理日志（开发调试用）
  logLevel: 'debug'
}));

// 创建HTTP服务器并启动
const server = http.createServer(app);
server.listen(PORT, () => {
  console.log(`本地服务器已启动：http://localhost:${PORT}`);
  console.log(`代理规则：/peerjs-server/* -> http://192.168.50.177:9000/*`);
});

// 优雅关闭服务器（处理Ctrl+C终止信号）
process.on('SIGINT', () => {
  console.log('\n正在关闭服务器...');
  server.close(() => {
    console.log('服务器已成功关闭');
    process.exit(0);
  });
});